Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 vector-feature-night-mode-enabled skin-theme-clientpref-os vector-sticky-header-enabled" lang="fr" dir="ltr"><head>
<meta charset="UTF-8">
<title>Basic (langage)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://fr.wikipedia.org/wiki/Basic_(langage)"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Basic_langage rootpage-Basic_langage skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Basic (langage)</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="fr" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="fr" dir="ltr">


<p class="mw-empty-elt">
</p>
<table class="infobox_v2 infobox infobox--frwiki noarchive">
<tbody><tr>
<td colspan="2" class="entete informatique" style="background-color:#005081;color:black;"><span style="color: #fff;">BASIC</span><style data-mw-deduplicate="TemplateStyles:r228712691">
/* start https://fr.wikipedia.org/ */


.mw-parser-output .entete.informatique{background-image:url("./_mw_/Picto.nfo.png")}


/* end https://fr.wikipedia.org/ */
</style>
</td></tr>

<tr><td colspan="3" style="text-align:center; line-height: 1.5em;"> <br>Capture d'écran d'un programme écrit en Atari Basic&nbsp;<a href="https://en.wikipedia.org/wiki/Atari_BASIC" class="extiw external" title="en:Atari BASIC"><span class="indicateur-langue" title="Article en anglais&nbsp;: «&nbsp;Atari BASIC&nbsp;»">(en)</span></a>, l'un des nombreux dialectes du Basic.</td></tr>
<tr>
<td colspan="2"><hr style="height:2px; color:inherit; background-color:#005081;"></td></tr>
<tr>
<th scope="row">Date de première version
</th>
<td><span class="wd_p571"><time datetime="1964" data-sort-value="1964" class="date-lien"><a href="1964" title="1964">1964</a></time></span>
</td>
</tr>
<tr>











<th scope="row">Influencé par
</th>
<td><a href="Algol_60" class="mw-redirect" title="Algol 60">Algol 60</a>, DOPE, <a href="Fortran" title="Fortran">Fortran</a>, JOSS&nbsp;<a href="https://en.wikipedia.org/wiki/JOSS" class="extiw external" title="en:JOSS"><span class="indicateur-langue" title="Article en anglais&nbsp;: «&nbsp;JOSS&nbsp;»">(en)</span></a>
</td>
</tr>
<tr>
<th scope="row">A influencé
</th>
<td>Comal&nbsp;<a href="https://en.wikipedia.org/wiki/COMAL" class="extiw external" title="en:COMAL"><span class="indicateur-langue" title="Article en anglais&nbsp;: «&nbsp;COMAL&nbsp;»">(en)</span></a>, <a href="Visual_Basic" title="Visual Basic">Visual Basic</a>, <a href="Visual_Basic_.NET" title="Visual Basic .NET">Visual Basic .NET</a>, <a href="Xojo" title="Xojo">Xojo</a>, Grass&nbsp;<a href="https://en.wikipedia.org/wiki/GRASS_(programming_language)" class="extiw external" title="en:GRASS (programming language)"><span class="indicateur-langue" title="Article en anglais&nbsp;: «&nbsp;GRASS (programming language)&nbsp;»">(en)</span></a>, <a href="AutoIt" title="AutoIt">AutoIt</a>, <a href="AutoHotKey" class="mw-redirect" title="AutoHotKey">AutoHotKey</a>, <a href="Lua" title="Lua">Lua</a>
</td>
</tr>
<tr>
<th scope="row">Implémentations
</th>
<td>Dartmouth BASIC, Tiny BASIC, Applesoft BASIC, <a href="Atari_8-bits" title="Atari 8-bits"> Atari BASIC</a>, Sinclair BASIC , <i><a href="https://en.wikipedia.org/wiki/Commodore_BASIC" class="extiw external" title="en:Commodore BASIC">Commodore BASIC</a></i>, BBC BASIC, <a href="TI-Basic" title="TI-Basic">TI-Basic</a>, Casio BASIC, <a href="Microsoft_BASIC" class="mw-redirect" title="Microsoft BASIC">Microsoft BASIC</a>, QB64 Liberty BASIC, PowerBASIC, <a href="QuickBASIC" class="mw-redirect" title="QuickBASIC">QuickBASIC</a>
</td>
</tr>
<tr>





<th scope="row"><a href="Extension_de_nom_de_fichier" title="Extension de nom de fichier">Extension de fichier</a>
</th>
<td><span class="wd_p1195">bas</span>
</td>
</tr>
<tr>

</tr>
</tbody></table>
<div class="boite-sigle" style="clear:right; float:right; margin:1px 1px 1em 1em">
<table class="wikitable alternance" style="margin:0">

<tbody><tr>
<td><span style="font-family:monospace,Courier">&nbsp;</span>&nbsp;<a href="Liste_de_sigles_de_deux_caract%C3%A8res" title="Liste de sigles de deux caractères">Sigles de 2 caractères</a>
</td></tr>
<tr>
<td><span style="font-family:monospace,Courier">&nbsp;</span>&nbsp;<a href="Liste_de_sigles_de_trois_caract%C3%A8res" title="Liste de sigles de trois caractères">Sigles de 3 caractères</a>
</td></tr>
<tr>
<td><span style="font-family:monospace,Courier">&nbsp;</span>&nbsp;<a href="Liste_de_sigles_de_quatre_caract%C3%A8res" title="Liste de sigles de quatre caractères">Sigles de 4 caractères</a>
</td></tr>
<tr>
<td><span style="font-family:monospace,Courier">►</span>&nbsp;<a href="Liste_de_sigles_de_cinq_caract%C3%A8res" title="Liste de sigles de cinq caractères">Sigles de 5 caractères</a>
</td></tr>
<tr>
<td><span style="font-family:monospace,Courier">&nbsp;</span>&nbsp;<a href="Liste_de_sigles_de_six_caract%C3%A8res" title="Liste de sigles de six caractères">Sigles de 6 caractères</a>
</td></tr>
<tr>
<td><span style="font-family:monospace,Courier">&nbsp;</span>&nbsp;<a href="Liste_de_sigles_de_sept_caract%C3%A8res" title="Liste de sigles de sept caractères">Sigles de 7 caractères</a>
</td></tr>
<tr>
<td><span style="font-family:monospace,Courier">&nbsp;</span>&nbsp;<a href="Liste_de_sigles_de_huit_caract%C3%A8res" title="Liste de sigles de huit caractères">Sigles de 8 caractères</a>
</td></tr></tbody></table></div>
<p><b>BASIC</b> (de l'<a href="Acronymie" title="Acronymie">acronyme</a> <a href="Anglais" title="Anglais">anglais</a> BASIC pour <i><span class="lang-en" lang="en">Beginner's All-purpose Symbolic Instruction Code</span></i>, littéralement «&nbsp;code d'instruction symbolique multiusage du débutant&nbsp;») fait partie d'une famille de <a href="Langage_de_programmation" title="Langage de programmation">langages de programmation</a> de <a href="Langage_de_programmation_de_haut_niveau" title="Langage de programmation de haut niveau">haut niveau</a> ayant pour caractéristique leur facilité d'utilisation. La première version de ce langage de programmation <span class="citation">«&nbsp;simple, spécialement dédié à un usage conversationnel&nbsp;»</span><sup id="cite_ref-ins_1-0" class="reference"><a href="#cite_note-ins-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> a été créée par <a href="John_George_Kemeny" title="John George Kemeny">John G. Kemeny</a> et <a href="Thomas_Eugene_Kurtz" title="Thomas Eugene Kurtz">Thomas E. Kurtz</a> au <a href="Dartmouth_College" title="Dartmouth College">Dartmouth College</a> en 1963, dans le cadre du projet de <a href="Temps_partag%C3%A9" title="Temps partagé">temps partagé</a> <a href="Dartmouth_Time-Sharing_System" title="Dartmouth Time-Sharing System">Dartmouth Time-Sharing System</a> (DTSS), dans l'<a href="%C3%89tats_des_%C3%89tats-Unis" title="États des États-Unis">État</a> du <a href="New_Hampshire" title="New Hampshire">New Hampshire</a>, peu après l'expérimentation du <a href="Compatible_Time_Sharing_System" title="Compatible Time Sharing System">Compatible Time Sharing System</a>, au MIT de Boston.
</p>

<div class="mw-heading mw-heading2"><h2 id="Développement"><span id="D.C3.A9veloppement"></span>Développement</h2></div>

<p>Jusqu'au début des années 1960, la programmation des ordinateurs reposait principalement sur l'écriture de programmes en <a href="Langage_machine" title="Langage machine">code machine</a> ou en <a href="Assembleur" title="Assembleur">langage assembleur</a>, des langages de <a href="Langage_de_programmation_de_bas_niveau" title="Langage de programmation de bas niveau">bas niveau</a> propres à chaque <a href="Architecture_mat%C3%A9rielle" title="Architecture matérielle">architecture matérielle</a><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>. Cette approche exigeait une connaissance approfondie de la machine utilisée, réservant ainsi la programmation à des spécialistes, souvent des scientifiques ou des ingénieurs. Bien que des langages de plus <a href="Langage_de_programmation_de_haut_niveau" title="Langage de programmation de haut niveau">haut niveau</a>, tels que <a href="Fortran" title="Fortran">Fortran</a> et <a href="Cobol" title="Cobol">COBOL</a>, aient vu le jour à la fin des années 1950, ils restaient complexes à maîtriser et n'étaient pas toujours accessibles aux novices ou aux non scientifiques. De plus, la diversité des architectures signifiait que chaque programme devait être adapté à un modèle d'ordinateur spécifique, rendant le <a href="D%C3%A9veloppement_de_logiciel" title="Développement de logiciel">développement logiciel</a> long et difficile.
</p><p>BASIC a marqué un tournant en rendant la programmation plus accessible. Ce langage de haut niveau s'affranchit des spécificités matérielles complexes grâce à un <a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interpréteur</a>, permettant ainsi à des étudiants, même issus de domaines non scientifiques, d’écrire des programmes sans avoir à maîtriser les subtilités des <a href="Langage_machine" title="Langage machine">langages machines</a> ou de l'<a href="Assembleur" title="Assembleur">assembleur</a>. Sa simplicité et son adaptabilité en ont fait un outil pédagogique efficace, ouvrant la voie à un apprentissage plus accessible de l’informatique<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Étymologie"><span id=".C3.89tymologie"></span>Étymologie</h3></div>
<p>Le nom BASIC correspond au titre d'un article non publié de Kurtz et est le <a href="R%C3%A9troacronymie" title="Rétroacronymie">rétroacronyme</a> de «&nbsp;<b>B</b>eginner’s <b>A</b>ll-purpose <b>S</b>ymbolic <b>I</b>nstruction <b>C</b>ode&nbsp;», soit «&nbsp;Code d’instruction symbolique multiusage pour débutants&nbsp;»<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>. Il n'a, par ailleurs, rien à voir avec les séries intitulées «&nbsp;<a href="Anglais_basic" class="mw-redirect" title="Anglais basic">Anglais basic</a>&nbsp;» de <a href="Charles_Kay_Ogden" title="Charles Kay Ogden">Charles Kay Ogden</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Système_de_partage_du_temps_de_Dartmouth_(DTSS)"><span id="Syst.C3.A8me_de_partage_du_temps_de_Dartmouth_.28DTSS.29"></span>Système de partage du temps de Dartmouth (DTSS)</h3></div>
<p>En plus de ce langage de programmation, Kemeny et Kurtz ont également développé le gestionnaire de <a href="Temps_partag%C3%A9" title="Temps partagé">temps partagé</a> de Dartmouth (DTSS), qui permettait à plusieurs utilisateurs d’éditer et d’exécuter des programmes BASIC simultanément sur des terminaux distants. Ce modèle général est devenu très populaire sur les systèmes de <a href="Mini-ordinateur" title="Mini-ordinateur">mini-ordinateurs</a> comme le <a href="PDP-11" title="PDP-11">PDP-11</a> et le <a href="Data_General_Nova" title="Data General Nova">Data General Nova</a> à la fin des <a href="Ann%C3%A9es_1960" title="Années 1960">années <time>1960</time></a> et au début des <a href="Ann%C3%A9es_1970" title="Années 1970">années 1970</a>. On le voit notamment avec <a href="Hewlett-Packard" title="Hewlett-Packard">Hewlett-Packard</a> qui produisent une gamme complète d’ordinateurs fonctionnant avec cette méthode, avec la série HP2000 à la fin des années 1960 et jusque dans les <a href="Ann%C3%A9es_1980" title="Années 1980">années 1980</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Histoire">Histoire</h3></div>
<p>La première version du langage Basic a été développée sur un <a href="Ordinateur_central" title="Ordinateur central">ordinateur central</a> <a href="Syst%C3%A8me_temps_r%C3%A9el" title="Système temps réel">temps réel</a> appelé GE-265 (<a href="General_Electric" title="General Electric">General Electric</a>), qui était un GE-225 avec une GE DataNet-30<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>. Cet ordinateur 20 bits, conçu en 1959 au sein du département d'informatique industrielle de la société <a href="General_Electric" title="General Electric">General Electric</a> par <a href="Arnold_Spielberg" title="Arnold Spielberg">Arnold Spielberg</a>, père de <a href="Steven_Spielberg" title="Steven Spielberg">Steven Spielberg</a><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>, occupait une pièce entière, embarquait 10&nbsp;000 transistors et 20&nbsp;000&nbsp;diodes. Les données étaient conservées sur des <a href="Bande_magn%C3%A9tique" title="Bande magnétique">bandes magnétiques</a> enroulées sur des bobines, des cartes perforées ou des bandes de papier. Vendu 250&nbsp;000&nbsp;dollars à l’époque, le GE-225 a été un succès commercial, malgré la désapprobation du directeur général de la société qui le produisait. Le Basic était le premier langage spécialement conçu pour être utilisé sur des systèmes interactifs.
</p><p>Les premières versions de Basic étaient utilisées sur des ordinateurs en <a href="Temps_partag%C3%A9" title="Temps partagé">temps partagé</a>. L’<a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interprétation</a> était plus commode que la compilation, car les modifications ne portaient souvent que sur quelques lignes entre deux passages successifs.
</p><p>Les constructeurs des premiers <a href="Ordinateur_personnel" title="Ordinateur personnel">ordinateurs individuels</a> avec clavier ont eu besoin d'inclure un outil permettant aux utilisateurs d'écrire des logiciels pour leur matériel. L'une des premières entreprises, Datapoint Corporation&nbsp;<a href="https://en.wikipedia.org/wiki/Datapoint" class="extiw external" title="en:Datapoint"><span class="indicateur-langue" title="Article en anglais&nbsp;: «&nbsp;Datapoint&nbsp;»">(en)</span></a> (à l'époque <a href="TRW" title="TRW">TRW</a>), avait créé son propre langage pour ses terminaux programmables Datapoint, mais l'abondance d'étudiants connaissant le Basic la conduisit à porter ce langage sur des machines comme son <a href="Datapoint_2200" title="Datapoint 2200">DATAPOINT 2200</a><sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>. Une version interprétée pouvait sans difficulté tenir en <a href="M%C3%A9moire_morte" title="Mémoire morte">mémoire morte (ROM)</a> ou vive (<a href="M%C3%A9moire_vive" title="Mémoire vive">RAM</a>). Le Basic avait en 1970 un concurrent, le langage <a href="FOCAL" title="FOCAL">FOCAL</a>, mais celui-ci était propre à <a href="Digital_Equipment_Corporation" title="Digital Equipment Corporation">DEC</a> et fut vite marginalisé, comme le sera le <a href="HP_9800#Le_langage_HPL" title="HP 9800">HPL</a> de <a href="Hewlett-Packard" title="Hewlett-Packard">Hewlett-Packard</a> six ans plus tard.
</p><p>Le Basic offrait aussi quelques commandes comme <tt>old, new, list</tt> et quelques autres déjà définies à l'intérieur même du langage, lui conférant ses capacités interactives.
</p><p>Les instructions scalaires commençaient par <i>LET</i> (<i>LET A=3</i>) et les matricielles par <i>MAT</i> (<i>MAT C = A+B</i>). Très vite, le <i>LET</i> deviendra facultatif pour alléger l'écriture des programmes.
</p><p>Chaque instruction était précédée d'un nombre, en général attribué de 10 en 10, qui permettait de remplacer une instruction ou d'en intercaler d'autres sans avoir à maîtriser un complexe <a href="%C3%89diteur_de_texte" title="Éditeur de texte">éditeur de texte</a> en mode machine à écrire.
</p><p>Les premiers ordinateurs individuels possédaient presque tous un interpréteur Basic en <a href="M%C3%A9moire_morte" title="Mémoire morte">mémoire morte</a> (<a href="TI-99/4A" title="TI-99/4A">TI-99/4A</a>, <a href="Commodore_64" title="Commodore 64">Commodore 64</a>, <a href="TRS-80" title="TRS-80">TRS-80</a>, <a href="Apple_II" title="Apple II">Apple II</a>, etc.). <a href="Hewlett-Packard" title="Hewlett-Packard">Hewlett-Packard</a> laissait le choix sur son <a href="HP_9800" title="HP 9800">HP 9825</a> entre un Basic standard et son langage maison HPL plus puissant, mais moins standard. Ces langages étaient sur cartouche ROM amovible.
</p><p>En <a href="1968" title="1968">1968</a>, un article d'<a href="Edsger_Dijkstra" title="Edsger Dijkstra">Edsger Dijkstra</a> devenu très populaire avait insisté sur la nocivité de l'instruction «&nbsp;<a href="Goto_(informatique)" title="Goto (informatique)">goto</a>&nbsp;» en matière de qualité du code<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>, et donc la productivité du programmeur. Cette critique s'appliquait alors à la plupart des langages, dont les dialectes du Basic. Dix ans plus tard, presque tous les langages avaient pris cette critique en compte, y compris le Basic. La popularité du Basic, langage de programmation grand public par excellence, fit dire à certains<sup class="need_ref_tag" style="padding-left:2px;">[<abbr class="abbr" title="référence">réf.</abbr>&nbsp;souhaitée]</sup> que ce langage a donné naissance à plus de mauvais programmes qu'aucun autre langage. Olivier Lecarme, professeur à l'Université Laval, affirmait à l'<a href="Association_fran%C3%A7aise_pour_la_cybern%C3%A9tique_%C3%A9conomique_et_technique" title="Association française pour la cybernétique économique et technique">AFCET</a>&nbsp;: <span class="citation">«&nbsp;<i>BASIC programming cannot teach you any kind of programming, not even basic programming</i>&nbsp;»</span>. De fait, privilégiant l'action plutôt que la méthode, ce langage aux contrôles sommaires ne convient qu'à la «&nbsp;petite programmation&nbsp;» (moins de <span class="nowrap">500 lignes</span>).
</p><p>Le Basic équipa dès le milieu des années 1970 presque tous les <a href="Ordinateur_personnel" title="Ordinateur personnel">micro-ordinateurs</a> du moment (<a href="Olivetti_P6060" title="Olivetti P6060">Olivetti P6060</a>, <a href="Tektronix" title="Tektronix">Tektronix 4051</a>, <a href="IBM_5100_et_5110" title="IBM 5100 et 5110">IBM 5100</a><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>, <a href="Commodore_PET" title="Commodore PET">Commodore PET</a>, etc.). Dans les <a href="Ann%C3%A9es_1980" title="Années 1980">années 1980</a>, la plupart des <a href="Ordinateur_personnel" title="Ordinateur personnel">micro-ordinateurs</a> étaient fournis avec un <a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interprète</a> Basic, parfois stocké en <a href="M%C3%A9moire_morte" title="Mémoire morte">mémoire morte (ROM)</a>&nbsp;: <a href="ROM_BASIC" title="ROM BASIC">ROM BASIC</a>. Le premier <a href="IBM_PC" title="IBM PC">IBM PC</a> pouvait démarrer sans <a href="Disquette" title="Disquette">disquette</a> et exécutait cette version du Basic rudimentaire.
</p><p>Les versions les plus répandues ont été les interpréteurs conçus par <a href="Microsoft" title="Microsoft">Microsoft</a>, qui pratiquait une politique de prix modérés et avait fini par s'imposer comme la référence&nbsp;: quelles que fussent les machines source et cible, on savait qu'un programme écrit en Basic <a href="Microsoft" title="Microsoft">Microsoft</a> tournerait sur un autre Basic <a href="Microsoft" title="Microsoft">Microsoft</a>.
</p><p>En <a href="1977" title="1977">1977</a> Microsoft avait sorti l'<a href="Altair_BASIC" title="Altair BASIC">Altair BASIC</a> (adaptation du Basic par <a href="Bill_Gates" title="Bill Gates">Bill Gates</a> et <a href="Paul_Allen" title="Paul Allen">Paul Allen</a>) pour l'<a href="Altair_8800" title="Altair 8800">Altair 8800</a> du constructeur <a href="Micro_Instrumentation_and_Telemetry_Systems" title="Micro Instrumentation and Telemetry Systems">MITS</a>. C'était son premier <a href="Logiciel" title="Logiciel">logiciel</a><sup id="cite_ref-Saga_10-0" class="reference"><a href="#cite_note-Saga-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>. En <a href="1979" title="1979">1979</a> Microsoft obtient d'<a href="IBM" title="IBM">IBM</a> la commercialisation de son interprète Basic avec les futurs <a href="IBM_PC" title="IBM PC">IBM PC</a> et <a href="Compatible_PC" title="Compatible PC">compatible PC</a>. Cette version était incluse dans la puce ROM des <a href="Ordinateur_personnel" title="Ordinateur personnel">PC</a>, et se lançait au démarrage en l'absence de système d'exploitation. Plus tard, Microsoft a vendu différentes versions du Basic pour <a href="DOS" title="DOS">DOS</a>, dont Basica, <a href="GW-Basic" title="GW-Basic">GW-Basic</a>, <a href="QuickBasic" title="QuickBasic">QuickBasic</a> et <a href="Visual_Basic" title="Visual Basic">Visual Basic</a> pour <a href="MS-DOS" title="MS-DOS">MS-DOS</a>. <a href="Microsoft" title="Microsoft">Microsoft</a> <a href="Windows_95" title="Windows 95">Windows 95</a> et <a href="Windows_98" title="Windows 98">Windows 98</a> incluaient un interpréteur <a href="QBasic" title="QBasic">QBasic</a> à installer à partir du <a href="CD-ROM" title="CD-ROM">CD-ROM</a> et <a href="Windows_98" title="Windows 98">Windows 98</a> incluait un interprète <a href="VBScript" title="VBScript">VBScript</a>. <a href="Visual_Basic_for_Applications" title="Visual Basic for Applications">Visual Basic for Applications</a> a été ajouté dans les produits <a href="Microsoft_Office" title="Microsoft Office">Microsoft Office</a> en <a href="1997" title="1997">1997</a>.
</p><p>À la même époque, le Basic sur <a href="Apple_II" title="Apple II">Apple II</a> ne connaissait que les nombres entiers&nbsp;; il fallut attendre l'<a href="Apple_II#Apple_II+_(juin_1979)" title="Apple II">Apple II+ en juin 1979</a> pour exploiter le traitement des réels.
</p><p>Le <a href="Compilateur" title="Compilateur">compilateur</a> <i>Waterloo Basic</i> fut l'un des premiers logiciels commercialisés par <a href="Open_Watcom#Aperçu" title="Open Watcom">Watcom</a>&nbsp;: il avait été programmé entre 1978 et 1979 pour l’IBM Series/1&nbsp;<a href="https://en.wikipedia.org/wiki/IBM_Series/1" class="extiw external" title="en:IBM Series/1"><span class="indicateur-langue" title="Article en anglais&nbsp;: «&nbsp;IBM Series/1&nbsp;»">(en)</span></a>, un système 16 bits. En 1979, le compilateur a été <a href="Portage_informatique" title="Portage informatique">porté</a> pour <a href="Hyperviseur" title="Hyperviseur">VM/CMS</a> tournant sur les <a href="IBM_360_et_370" title="IBM 360 et 370">IBM 370, 3030 et 4300</a>, et un accord avec <a href="IBM" title="IBM">IBM</a> a permis sa mise sur le marché. Il y eut plusieurs mises à jour de 1980 à 1983 ainsi qu'une version portée sur l’<a href="Time_Sharing_Option" title="Time Sharing Option">interpréteur de commandes MVS/TSO</a> et sur <a href="Hyperviseur" title="Hyperviseur">VM/CMS</a>.
</p><p><a href="Borland" title="Borland">Borland</a> a publié son compilateur <a href="Turbo_Basic" title="Turbo Basic">Turbo Basic</a> 1.0 en 1985. Les versions suivantes sont encore vendues sous le nom de <a rel="nofollow" class="external text" href="https://www.powerbasic.com/">PowerBasic</a> par une autre compagnie. Il existe toujours une version pour <a href="MS-DOS" title="MS-DOS">MS-DOS</a>.
</p><p>La nécessité d'enseigner un langage de programmation davantage structuré avait donné naissance au <a href="Pascal_(langage)" title="Pascal (langage)">langage Pascal</a> en 1972. Ce langage, en particulier grâce au compilateur <a href="Turbo_Pascal" title="Turbo Pascal">Turbo Pascal</a> de la société <a href="Borland" title="Borland">Borland</a>, bien plus rapide que n'importe quel interprète Basic de l'époque, remporta un énorme succès au cours des <a href="Ann%C3%A9es_1980" title="Années 1980">années 1980</a>, et marqua un début de déclin de la popularité du Basic dans le grand public<sup class="need_ref_tag" style="padding-left:2px;"><span title="Ce passage nécessite une référence ; voir l'aide.">[réf.&nbsp;nécessaire]</span></sup>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Développement_de_plusieurs_dialectes_BASIC"><span id="D.C3.A9veloppement_de_plusieurs_dialectes_BASIC"></span>Développement de plusieurs dialectes BASIC</h3></div>
<div class="noresize thumb tright" style=";">
<div class="thumbinner" style="overflow:hidden;width:472px;">
<div class="thumbimage" style="height:232px; overflow:hidden; position:relative; background-color:white;">
<div style=";left:-1200px; top:-1120px; width:2000px; position:absolute;"> <span typeof="mw:File"></span></div>
<div style="text-align:left; line-height:110%;">
<div style="position:absolute;padding:0px; top:30%;left:8%;"><div style="position:absolute; border: 2px solid #808080; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:30%;left:8%; width:0px;bottom:25%;border-right:1px solid #808080; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; bottom:25%;left:8%;width:0px;"><div style="position:absolute;text-align:center; top:0px;left:-60px;width:120px;height:0px;"><span class="toponyme"><span style="color:#ffff00">Touche<br>LIST</span></span></div></div>
<div style="position:absolute;padding:0px; top:70%;left:18%;"><div style="position:absolute; border: 2px solid #808080; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:70%;left:18%; width:0px;bottom:10%;border-right:1px solid #808080; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; bottom:10%;left:18%;width:0px;"><div style="position:absolute;text-align:center; top:0px;left:-60px;width:120px;height:0px;"><span class="toponyme"><span style="color:#ffff00">POKE</span></span></div></div>
<div style="position:absolute;padding:0px; top:30%;left:25%;"><div style="position:absolute; border: 2px solid #808080; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:30%;left:25%; width:0px;bottom:25%;border-right:1px solid #808080; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; bottom:25%;left:25%;width:0px;"><div style="position:absolute;text-align:center; top:0px;left:-60px;width:120px;height:0px;"><span class="toponyme"><span style="color:#ffff00">Touche<br>MOTOR</span></span></div></div>
<div style="position:absolute;padding:0px; top:70%;left:45%;"><div style="position:absolute; border: 2px solid #808080; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:70%;left:45%; width:0px;bottom:15%;border-right:1px solid #808080; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; bottom:15%;left:45%;width:0px;"><div style="position:absolute;text-align:center; top:0px;left:-60px;width:120px;height:0px;"><span class="toponyme"><span style="color:#ffff00">Touche BASIC</span></span></div></div>
<div style="position:absolute;padding:0px; top:70%;left:75%;"><div style="position:absolute; border: 2px solid #808080; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:70%;left:75%; width:0px;bottom:10%;border-right:1px solid #808080; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; bottom:10%;left:75%;width:0px;"><div style="position:absolute;text-align:center; top:0px;left:-60px;width:120px;height:0px;"><span class="toponyme"><span style="color:#ffff00">LOAD</span></span></div></div>
<div style="position:absolute;padding:0px; top:30%;left:82%;"><div style="position:absolute; border: 2px solid #808080; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:30%;left:82%; width:0px;bottom:25%;border-right:1px solid #808080; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; bottom:25%;left:82%;width:0px;"><div style="position:absolute;text-align:center; top:0px;left:-60px;width:120px;height:0px;"><span class="toponyme"><span style="color:#ffff00">Touche<br>SKIPF</span></span></div></div>
<div style="position:absolute;padding:0px; top:70%;left:95%;"><div style="position:absolute; border: 2px solid #808080; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:70%;left:95%; width:0px;bottom:10%;border-right:1px solid #808080; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; bottom:10%;left:95%;width:0px;"><div style="position:absolute;text-align:center; top:0px;left:-60px;width:120px;height:0px;"><span class="toponyme"><span style="color:#ffff00">SAVE</span></span></div></div>
</div>
<div style="visibility:hidden"></div>
</div>
<div class="thumbcaption">Ordinateur <a href="MO5" class="mw-disambig" title="MO5">MO5</a> doté d'une touche pour le langage BASIC, et des mots clés du langage basic directement inscrits sur les touches du clavier.</div>
</div></div>
<div class="noresize thumb tright" style=";">
<div class="thumbinner" style="overflow:hidden;width:472px;">
<div class="thumbimage" style="height:232px; overflow:hidden; position:relative; background-color:white;">
<div style=";left:-450px; top:-1810px; width:2000px; position:absolute;"> <span typeof="mw:File"></span></div>
<div style="text-align:left; line-height:110%;">
<div style="position:absolute;padding:0px; top:15%;left:8%;"><div style="position:absolute; border: 2px solid red; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:10%;left:8%; height:5%;width:0px;border-right:1px solid red; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; top:10%;left:8%;height:0px;"><div style="position:absolute;text-align:center; left:-60px;width:120px;bottom:0px;"><span class="toponyme"><span style="color:#ffff00">GOTO</span></span></div></div>
<div style="position:absolute;padding:0px; top:50%;left:22%;"><div style="position:absolute; border: 2px solid red; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:10%;left:22%; height:40%;width:0px;border-right:1px solid red; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; top:10%;left:22%;height:0px;"><div style="position:absolute;text-align:center; left:-60px;width:120px;bottom:0px;"><span class="toponyme"><span style="color:#ffff00">REM</span></span></div></div>
<div style="position:absolute;padding:0px; top:15%;left:37%;"><div style="position:absolute; border: 2px solid red; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:10%;left:37%; height:5%;width:0px;border-right:1px solid red; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; top:10%;left:37%;height:0px;"><div style="position:absolute;text-align:center; left:-60px;width:120px;bottom:0px;"><span class="toponyme"><span style="color:#ffff00">GOSUB</span></span></div></div>
<div style="position:absolute;padding:0px; top:15%;left:56%;"><div style="position:absolute; border: 2px solid red; padding:0;top:-2px;left:-2px;width:-2px;height:-2px;"></div></div><div style="position:absolute; top:10%;left:56%; height:5%;width:0px;border-right:1px solid red; margin:0;padding:0;line-height:0px;"></div><div style="position:absolute;margin:0;padding:0;line-height:2ex; top:10%;left:56%;height:0px;"><div style="position:absolute;text-align:center; left:-60px;width:120px;bottom:0px;"><span class="toponyme"><span style="color:#ffff00">Instruction&nbsp;RETURN</span></span></div></div>
</div>
<div style="visibility:hidden"></div>
</div>
<div class="thumbcaption">Touches marquées des instructions BASIC et des alphabets américains et japonais, sur un clavier SK-1100 pour SG-1000.</div>
</div></div>
<p>L’émergence des <a href="Ordinateur_personnel" title="Ordinateur personnel">micro-ordinateurs</a> au milieu des <a href="Ann%C3%A9es_1970" title="Années 1970">années 1970</a> a conduit au développement de plusieurs dialectes BASIC, y compris <a href="BASIC_Microsoft" title="BASIC Microsoft">BASIC Microsoft</a> en <a href="1975_en_informatique" title="1975 en informatique">1975</a>. En raison de la taille de la mémoire principale extrêmement réduite, souvent 4 Ko sur ce genre de machine, une variété de dialectes comme le Tiny BASIC a également été introduite.
</p><p>À l'époque, le BASIC était disponible pour presque tous les systèmes et est devenu le langage de programmation <i>de facto</i> pour les systèmes informatiques domestiques qui ont émergé à la fin des années 1970. Ces PC avaient presque toujours un interpréteur BASIC installé par défaut, souvent dans le <a href="Firmware" title="Firmware">firmware</a> de la machine ou parfois sur une cartouche ROM.
</p>
<div class="mw-heading mw-heading3"><h3 id="Déclin_en_popularité"><span id="D.C3.A9clin_en_popularit.C3.A9"></span>Déclin en popularité</h3></div>
<p>BASIC a décliné en popularité dans les années 1990, à mesure que des <a href="Micro-ordinateurs" class="mw-redirect" title="Micro-ordinateurs">micro-ordinateurs</a> plus puissants sont arrivés sur le marché et que les langages de programmation dotés de fonctionnalités avancées (tels que Pascal et C) sont devenus plus accessibles. En <a href="1991_en_informatique" title="1991 en informatique">1991</a>, Microsoft a publié <a href="Visual_Basic" title="Visual Basic">Visual Basic</a> (VB), combinant une version mise à jour de BASIC avec un générateur de formulaires visuels. Cette utilisation a relancé le langage et VB reste un langage de programmation majeur sous les formes de <a href="Visual_Basic_for_Applications" title="Visual Basic for Applications">VBA</a> et de <a href="Visual_Basic_.NET" title="Visual Basic .NET">VB.NET</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Buts">Buts</h2></div>
<p>Au début des <a href="Ann%C3%A9es_1960" title="Années 1960">années 1960</a>, les <a href="Langage_de_programmation" title="Langage de programmation">langages de programmation</a> convenaient davantage aux <a href="Carte_perfor%C3%A9e" title="Carte perforée">cartes perforées</a> qu'aux <a href="Temps_partag%C3%A9" title="Temps partagé">terminaux interactifs</a>. Même le langage <a href="Fortran" title="Fortran">Fortran</a> II, peu développé mais déjà complexe, n'était pas adapté aux <a href="Alg%C3%A8bre_lin%C3%A9aire" title="Algèbre linéaire">calculs matriciels</a> qui étaient utilisés dans le domaine des <a href="Sciences_humaines_et_sociales" title="Sciences humaines et sociales">sciences humaines</a>. Ces langages n'étant pas <a href="Interactivit%C3%A9" title="Interactivité">interactifs</a>, ils exigeaient que le programme utilisé soit exempt de toute erreur de syntaxe pour être exécuté.
</p><p>Le langage Basic a été conçu en <a href="1964" title="1964">1964</a> par <a href="John_George_Kemeny" title="John George Kemeny">John George Kemeny</a> (1926-1993) et <a href="Thomas_Eugene_Kurtz" title="Thomas Eugene Kurtz">Thomas Eugene Kurtz</a> (1928-2006) au «&nbsp;<a href="Dartmouth_College" title="Dartmouth College">Dartmouth College</a>&nbsp;» pour permettre aux étudiants des filières non scientifiques d'utiliser des ordinateurs.
</p><p>Les huit principes de conception du Basic étaient<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>&nbsp;:
</p>
<ol><li>Être facile à apprendre pour un débutant<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>&nbsp;;</li>
<li>Être généraliste, donc traiter aussi bien les <a href="Matrice_(math%C3%A9matiques)" title="Matrice (mathématiques)">matrices</a> de nombres que les <a href="Cha%C3%AEne_de_caract%C3%A8res" title="Chaîne de caractères">chaînes de caractères</a>&nbsp;;</li>
<li>Autoriser l'ajout de fonctionnalités pour les experts (tout en restant simple d'utilisation pour les débutants)&nbsp;;</li>
<li>Être interactif, et entre autres permettre d'interrompre un programme pour examiner ses variables, en modifier les instructions, et reprendre ensuite son exécution&nbsp;;</li>
<li>Fournir des messages d'erreur clairs et conviviaux<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>&nbsp;;</li>
<li>Avoir un délai de réaction faible pour les petits programmes&nbsp;;</li>
<li>Ne pas nécessiter de connaissances sur le matériel de l'ordinateur&nbsp;;</li>
<li>Isoler l'utilisateur du <a href="Syst%C3%A8me_d'exploitation" title="Système d'exploitation">système d'exploitation</a> lorsqu'il y en avait un.</li></ol>
<p>Afin d'arriver à ce résultat, plusieurs conditions furent posées. Pour que le Basic puisse être interactif et simple, il fallait&nbsp;:
</p>
<ul><li>que ses sept <a href="Instruction_informatique" title="Instruction informatique">instructions</a> puissent être enseignées en une demi-journée&nbsp;;</li>
<li>que des <a href="Matrice_(math%C3%A9matiques)" title="Matrice (mathématiques)">opérations matricielles</a> puissent être exécutables en mode calcul de bureau&nbsp;;</li>
<li>qu'un programme puisse s'exécuter au moins jusqu'à ce que soit rencontrée une première erreur, facilitant ainsi l'apprentissage du langage.</li></ul>
<p>La forme originelle du <a href="Langage_de_programmation" title="Langage de programmation">langage</a> Basic s'inspire du <a href="Fortran" title="Fortran">Fortran</a>, avec des ajouts pour le rendre interactif et capable de traiter en mode calcul de bureau des <a href="Alg%C3%A8bre_lin%C3%A9aire" title="Algèbre linéaire">opérations matricielles</a>, notamment les multiplications et inversions. Le langage a été <a href="Mise_en_%C5%93uvre" title="Mise en œuvre">implémenté</a> par une douzaine d'étudiants, dont <a href="Mary_Kenneth_Keller" title="Mary Kenneth Keller">Mary Kenneth Keller</a>, l'une des premières personnes et la première femme à obtenir un <a href="Doctorat" title="Doctorat">doctorat</a> en informatique aux <a href="%C3%89tats-Unis" title="États-Unis">États-Unis</a>.
</p><p>Les concepteurs du langage décidèrent que le langage ferait partie du <a href="Domaine_public_(propri%C3%A9t%C3%A9_intellectuelle)" title="Domaine public (propriété intellectuelle)">domaine public</a>, de manière à favoriser sa diffusion. L'écriture d'un <a href="Interpr%C3%A9teur_de_commandes" title="Interpréteur de commandes">interpréteur</a> de Basic faisait partie des projets classiques donnés aux étudiants en informatique dans le monde entier.
</p>
<div class="mw-heading mw-heading2"><h2 id="Principe_de_fonctionnement">Principe de fonctionnement</h2></div>

<p>Le Basic est souvent interprété, mais rien ne l'empêche d'être <a href="Compilateur" title="Compilateur">compilé</a><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> là où l'interactivité avec le programmeur n'était plus nécessaire, par exemple packages de gestion. Malgré sa normalisation, plusieurs dialectes sont apparus au cours des années, partis de la même base, et proposant des améliorations diverses, par exemple dans le domaine des <a href="Interface_graphique" title="Interface graphique">interfaces graphiques</a> ou de l'<a href="Programmation_orient%C3%A9e_objet" title="Programmation orientée objet">orienté objet</a>. La référence sur PC (<a href="MS-DOS" title="MS-DOS">MS-DOS</a>) a été le <a href="GW-Basic" title="GW-Basic">GW-Basic</a> puis quelque temps le <a href="QuickBasic" title="QuickBasic">QuickBasic</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Syntaxe">Syntaxe</h2></div>
<p>La syntaxe vraiment minimale du Basic est seulement composée de l'instruction d'affectation par le signe "=" (devant autrefois être précédée du mot-clé <tt>LET</tt>), <tt>PRINT</tt> (affichage à l'écran), <tt>IF-THEN-ELSE</tt> (exécution conditionnelle) et <tt>GOTO</tt> (saut vers une zone du programme). Un <a href="Interpr%C3%A8te_(informatique)" title="Interprète (informatique)">interprète</a> qui exécute des programmes avec cette syntaxe minimale n'a pas besoin d'une <a href="Pile_(informatique)" title="Pile (informatique)">pile</a>. Nombre des premières implémentations sur <a href="Micro-ordinateur" class="mw-redirect" title="Micro-ordinateur">micro-ordinateur</a> n'eurent que ces instructions<sup class="need_ref_tag" style="padding-left:2px;"><span title="Ce passage nécessite une référence ; voir l'aide.">[réf.&nbsp;nécessaire]</span></sup>, les programmes n'étaient donc pas structurés. Si on ajoute une pile, l'instruction <tt>GOSUB</tt> (saut vers une séquence servant de sous-programme et terminée par <tt>RETURN</tt>) fut rapidement ajoutée.
</p>
<div class="mw-heading mw-heading3"><h3 id="Interprètes_à_numéro_de_ligne"><span id="Interpr.C3.A8tes_.C3.A0_num.C3.A9ro_de_ligne"></span>Interprètes à numéro de ligne</h3></div>
<p>Les premiers interprètes Basic exigeaient une numérotation des lignes à mémoriser. Une ligne non numérotée était simplement exécutée immédiatement. On ne pouvait avoir qu'un seul programme à la fois en mémoire.
</p><p>Le typage était implicite&nbsp;: par exemple, les variables dont l'identifiant se termine par $ étaient destinées à contenir des chaînes de caractères alphanumériques et ne pouvaient donc servir aux opérations arithmétiques (le + est l'opérateur de <a href="Concat%C3%A9nation" title="Concaténation">concaténation</a>).
</p><p>L'usage était de numéroter les lignes de 10 en 10, afin de pouvoir éventuellement insérer des lignes supplémentaires.
</p><p>Les boucles à compteur FOR...NEXT constituaient la seule forme itérative.
</p><p>Avec certains interprètes il fut possible, à partir des années 1980, de mettre plusieurs commandes sur une même ligne. Toutefois, il n'était pas possible de regrouper un ensemble de commandes s'exécutant ensemble, comme après une condition <tt>IF-THEN</tt>. Il fallait recourir à des sauts de ligne <tt>GOTO n° de ligne</tt>, ou à des appels de sous-programmes ouverts, non paramétrés, par <tt>GOSUB n° de ligne </tt>
</p><p>L'ambition croissante des programmeurs, le besoin d'une <a href="Programmation_structur%C3%A9e" title="Programmation structurée">programmation plus structurée</a> amenèrent plusieurs évolutions&nbsp;:
</p>
<ul><li>le développement de formes IF à deux branches, la multiplication des formes itératives, et l'obligation d'expliciter les étiquettes pour les branchements résiduels&nbsp;;</li>
<li>l'introduction de fonctions paramétrables, d'abord d'une ligne, puis de plusieurs lignes, puis récursives.</li></ul>
<p>Puis les Basic durent s'adapter aux environnements graphiques et au multi fenêtrage.
</p>
<div class="mw-heading mw-heading3"><h3 id="Interprètes_modernes"><span id="Interpr.C3.A8tes_modernes"></span>Interprètes modernes</h3></div>
<p>Les dialectes Basic modernes n'emploient plus nécessairement les numéros de lignes (qui restent possibles, mais qui n'ont plus qu'un rôle éditorial) et ont une richesse de commandes et une construction des déclarations de données identiques à d'autres langages comme le <a href="Langage_Pascal" class="mw-redirect" title="Langage Pascal">langage Pascal</a>.
</p><p>Les récentes variantes comme le <a href="Visual_Basic" title="Visual Basic">Visual Basic</a> ont introduit une <a href="Orient%C3%A9_objet" class="mw-redirect" title="Orienté objet">orientation objet</a> avec gestion de l'implémentation d'interfaces et, dans <a href="Visual_Basic_.NET" title="Visual Basic .NET">Visual Basic .NET</a>, l'<a href="H%C3%A9ritage_(Informatique)" class="mw-redirect" title="Héritage (Informatique)">héritage</a> (simple).
Cependant la gestion des erreurs nécessite généralement l'utilisation de <tt>GOTO</tt>, ce qui casse la structuration des programmes.
</p><p>Visual Basic .NET permet l'utilisation de blocs Try/Catch, mais conserve néanmoins la possibilité d'utiliser des On Error GoTo, pour conserver une certaine compatibilité avec des versions antérieures de Visual Basic.
</p><p>La richesse des variantes est synonyme de non-standardisation. Cela montre comme ce langage est «&nbsp;organique&nbsp;» et comme il est plutôt une sous-culture qui traite la programmation d'ordinateur comme un ensemble fixe de règles de syntaxe. Mais la même chose s'applique tout autant aux autres «&nbsp;vieux&nbsp;» <a href="Langage_de_programmation" title="Langage de programmation">langages de programmation</a> comme le <a href="Cobol" title="Cobol">Cobol</a> et le <a href="Fortran" title="Fortran">Fortran</a>. Cependant le mouvement du Basic est de loin le plus important et une société comme <i>Niakwa</i><sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> vécut jusqu'au milieu des années 1990 très largement de son Basic sur <a href="Unix" title="Unix">Unix</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Procédures"><span id="Proc.C3.A9dures"></span>Procédures</h2></div>
<p>Le Basic n'a généralement pas de <a href="Biblioth%C3%A8que_logicielle" title="Bibliothèque logicielle">bibliothèque</a> externe standard comme d'autres langages, le <a href="Langage_C" class="mw-redirect" title="Langage C">langage C</a> par exemple. Au lieu de cela, l'interprète ou le compilateur contiennent une bibliothèque intégrée étendue de procédures intrinsèques. Ces procédures incluent plus d'outils que ce dont le programmeur a besoin pour apprendre la programmation et écrire de simples applications, dont des fonctions mathématiques, des fonctions de traitement des chaînes de caractères, d'entrée-sortie <a href="Terminal_informatique" class="mw-redirect" title="Terminal informatique">console</a>, de graphisme et de manipulation de fichiers. Le QuickBasic permet d'inclure des bibliothèques écrites dans ce langage (QLB) ou en d'autres langages (LIB).
</p><p>Certains dialectes Basic ne permettent pas aux programmeurs d'écrire leurs propres procédures. À cause de cela, les programmeurs sont obligés d'écrire leurs programmes avec une importante utilisation de <tt>goto</tt> et de <tt>gosub</tt> rendant difficile de suivre le <a href="Code_source" title="Code source">code source</a>, alors appelé couramment un «&nbsp;<a href="Code_spaghetti" class="mw-redirect" title="Code spaghetti">code spaghetti</a>&nbsp;». Beaucoup de versions du Basic comme le <a href="QuickBasic" title="QuickBasic">QuickBasic</a> de Microsoft ont ajouté un support des sous-routines et des fonctions (avec support de la récursivité). Il fait la distinction entre une procédure qui ne retourne jamais de valeur (appelée <a href="Sous-programme" title="Sous-programme">sous-routine ou <i>sub</i></a>) et une procédure qui en renvoie (appelée <a href="https://fr.wikiversity.org/wiki/Introduction_g%C3%A9n%C3%A9rale_%C3%A0_la_programmation/Fonctions" class="extiw external" title="v:Introduction générale à la programmation/Fonctions">fonction</a>). Certains langages ne font pas cette distinction et considèrent tout comme une fonction dont certaines renvoient une valeur «&nbsp;vide&nbsp;».
</p><p>Le Basic est bien connu pour ses fonctions de manipulations de chaînes de caractères. Les premiers dialectes avaient déjà un ensemble de fonctions basiques (<tt>left$, mid$, right$</tt>) pour les traiter simplement. Comme elles sont souvent utilisées dans les applications de tous les jours, cela est un avantage considérable.
</p>
<div class="mw-heading mw-heading2"><h2 id="Types_de_données"><span id="Types_de_donn.C3.A9es"></span>Types de données</h2></div>
<p>Chaque version de ce langage intègre les données de type entier et chaîne de caractères. Normalement, il n'est pas nécessaire de les déclarer comme telles, mais les versions modernes ont la capacité de forcer la déclaration des variables en ajoutant la directive «&nbsp;Option Explicit&nbsp;» au début du code source.
</p><p>Les <a href="Type_(informatique)" title="Type (informatique)">types de données</a> modernes supportés par le Basic incluent&nbsp;: booléens, entiers signés sur <span class="nowrap">16 bits</span>, entiers signés sur <span class="nowrap">32 bits</span>, chaînes de caractères, <a href="Nombre_d%C3%A9cimal" title="Nombre décimal">nombres décimaux</a>.
</p><p>Certains dialectes comme <a href="Visual_Basic" title="Visual Basic">Visual Basic</a> ont plus de types de données intrinsèques. De plus, certains dialectes permettent à l'utilisateur de définir ses propres types, appelés <i>types définis par l'utilisateur</i>, et qui sont en fait des <a href="Structure_de_donn%C3%A9es" title="Structure de données">structures</a>, c'est-à-dire une simple variable contenant plusieurs champs.
</p>
<div class="mw-heading mw-heading2"><h2 id="Disponibilité_et_variantes"><span id="Disponibilit.C3.A9_et_variantes"></span>Disponibilité et variantes</h2></div>
<p>Le Basic est disponible pour toutes les plates-formes récentes. Une version interprétée <a href="Logiciel_libre" title="Logiciel libre">libre</a> qui est conforme aux standards et hautement multiplateforme est le <a href="Bywater_BASIC" title="Bywater BASIC">Bywater BASIC</a>. L'interprète est écrit en <a href="Langage_C" class="mw-redirect" title="Langage C">langage C</a>, sous licence <a href="Licence_publique_g%C3%A9n%C3%A9rale_GNU" title="Licence publique générale GNU">GPL</a>. Il ne permet pas de faire des <a href="Interface_utilisateur_graphique" class="mw-redirect" title="Interface utilisateur graphique">interfaces utilisateur graphiques (GUI)</a>.
</p><p>Une version libre, similaire au <a href="Visual_Basic" title="Visual Basic">Visual Basic</a> et tournant sous Windows et GNU/Linux, et permettant donc de faire des <a href="Interface_utilisateur_graphique" class="mw-redirect" title="Interface utilisateur graphique">environnements graphiques (GUI)</a>, existe et s'appelle le Phoenix Object Basic. Il en existe deux autres plus récentes&nbsp;: <a href="Gambas_(langage)" title="Gambas (langage)">Gambas</a> et <a href="K-Basic" title="K-Basic">K-Basic</a> utilisant la performante et multiplateforme bibliothèque <a href="Qt" title="Qt">Qt</a>.
</p><p>La plus connue des versions compilées est le <a href="QuickBasic" title="QuickBasic">QuickBasic</a> de <a href="Microsoft" title="Microsoft">Microsoft</a> et le <a href="QBasic" title="QBasic">QBasic</a>, une version qui ne permet pas de générer des programmes autonomes. Les dernières versions de <a href="Visual_Basic" title="Visual Basic">Visual Basic</a> sont aussi compilées, bien que <a href="Microsoft" title="Microsoft">Microsoft</a> ait changé le Visual Basic en un langage compatible d'une façon minimale avec les premières versions du Dartmouth Basic.
</p><p>D'autres versions, dont le True BASIC et le PowerBasic, sont compatibles avec le standard ANSI Basic.
</p><p>True Basic Inc. a été fondée par les créateurs originaux du Basic, tout en lui adjoignant de nombreuses fonctionnalités.
</p><p>PowerBasic Inc, fondée par le concepteur de <a href="Turbo_Basic" title="Turbo Basic">Turbo Basic</a><sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>, propose toujours son PowerBasic en version 16 bits pour MSDos, mais aussi en version 32 bits pour Console (PBCC) et pour Windows (PBWin). Pour ce dernier un outil graphique (PowerBasic Forms) facilite la création graphique d'interfaces utilisateurs basées sur des objets Windows. Son compilateur produit des exécutables compacts, rapides et stables de qualité industrielle.
</p><p>Le <a href="GFA_BASIC" class="mw-redirect" title="GFA BASIC">GFA BASIC</a> mis au point par <a href="Frank_Ostrowski" title="Frank Ostrowski">Frank Ostrowski</a> est un dialecte Basic qui permet la réalisation d'exécutables puissants pour les environnements Atari et <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a>, disponible gratuitement en tant qu'<a href="Abandonware" class="mw-redirect" title="Abandonware">abandonware</a> .
</p><p><a href="RealBasic" class="mw-redirect" title="RealBasic">RealBasic</a> est une variante disponible pour les <a href="Apple_Macintosh" class="mw-redirect" title="Apple Macintosh">Apple Macintosh</a> qui génère aussi des exécutables pour <a href="Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> et <a href="Linux" title="Linux">GNU/Linux</a>.
</p><p>Une variante d'un dialecte Basic simple pour la <a href="Machine_virtuelle" title="Machine virtuelle">machine virtuelle</a> <a href="Parrot_(machine_virtuelle)" title="Parrot (machine virtuelle)">Parrot</a> montre comment un interprète Basic est mis en application dans un langage de type <a href="Langage_assembleur" class="mw-redirect" title="Langage assembleur">assembleur</a>.
</p><p>Le <a href="PureBasic" title="PureBasic">PureBasic</a> est une variante avec une syntaxe simple mais avec une production rapide et des fichiers exécutables petits, pour <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a>, <a href="Linux" title="Linux">GNU/Linux</a>, <a href="AmigaOS" title="AmigaOS">AmigaOS</a> et <a href="Mac_OS" class="mw-redirect" title="Mac OS">Mac OS</a>. Il peut aussi compiler et contenir des instructions en assembleur en-ligne.
</p><p>Le <a href="WxBasic" title="WxBasic">wxBasic</a> est une variante, écrite en C et C++, pour <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a>, <a href="Linux" title="Linux">GNU/Linux</a> et peut-être bientôt sous <a href="Mac_OS" class="mw-redirect" title="Mac OS">Mac OS</a>. Il est gratuit et peut être utilisé en compilé ou en interprété.
</p><p>Le <a href="BlitzBasic" class="mw-redirect" title="BlitzBasic">BlitzBasic</a> et le <a href="DarkBasic" class="mw-redirect" title="DarkBasic">DarkBasic</a> sont des variantes spécialisées dans la création de jeux vidéo avec un accès simplifié aux <a href="Interface_de_programmation" title="Interface de programmation">interfaces de programmation (API)</a> multimédias tels <a href="OpenGL" title="OpenGL">OpenGL</a> et <a href="DirectX" title="DirectX">DirectX</a>. Le <a href="Compilateur" title="Compilateur">compilateur</a> est payant dans les deux cas. Cette variante est optimisée. On peut avoir des bons résultats rapidement pour des débutants.
</p><p>Liberty Basic est spécialisé dans l'élaboration facile d'interface graphique, il est reconnu comme le successeur de QBasic.
</p><p>Le SmallBasic est un dialecte qui fonctionne sur un grand nombre de plates-formes (<a href="Microsoft_Windows" title="Microsoft Windows">Win32</a>, <a href="MS-DOS" title="MS-DOS">MS-DOS</a>, <a href="Linux" title="Linux">GNU/Linux</a> et <a href="Palm_OS" title="Palm OS">Palm OS</a>) et est placé sous une licence <a href="GNU" title="GNU">GNU</a>.
</p><p><a href="FreeBASIC" class="mw-redirect" title="FreeBASIC">FreeBASIC</a>, développé par une communauté QBasic en déclin, est un compilateur 32-bits distribué sous licence GPL. Il est multiplateforme et, bien qu'encore en version bêta, très prometteur. Sa syntaxe est calquée sur celle du QBasic de Microsoft mais il supporte les pointeurs, l'assembleur <i>inline</i> et prochainement une branche orientée objet devrait être incorporée.
</p><p>Il existe également une version de Basic pour <a href="LibreOffice" title="LibreOffice">LibreOffice</a> et <a href="Apache_OpenOffice" title="Apache OpenOffice">Apache OpenOffice</a>, appelée <i>OOoBasic</i> (c'est le même langage utilisé pour <a href="StarOffice_Basic" title="StarOffice Basic">StarOffice Basic</a>, même si son nom, <i>StarBasic</i>, change).
</p><p>Le <a href="TI-Basic" title="TI-Basic">TI-Basic</a> est le langage de programmation utilisé sur certaines calculatrices <a href="Texas_Instruments" title="Texas Instruments">Texas Instruments</a>, de même que le Basic Casio, utilisé sur les calculatrices graphiques <a href="Casio" title="Casio">Casio</a>.
</p><p>Sur les TI-99, le TI-Basic est différent de celui que l'on peut trouver sur les calculatrices de la marque. Il existe également un TI-Basic étendu plus perfectionné permettant l'accès à l'extension mémoire, les commandes CALL PEEK et CALL POKE, l'amélioration de la gestion des couleurs, l'apparition des <i>sprites</i>, petites images auxquelles on peut donner une vitesse et un sens de déplacement.
</p><p>Au nombre des modèles de matériels populaires qui utilisèrent le langage Basic figurent&nbsp;:
</p>
<ul><li>la série <a href="Amstrad_CPC" title="Amstrad CPC">CPC</a> de <a href="Amstrad" title="Amstrad">Amstrad</a>&nbsp;;</li>
<li>la série <a href="Thomson_MO5" title="Thomson MO5">MO</a> et <a href="Thomson_TO7" title="Thomson TO7">TO</a> de la marque <a href="SIMIV" title="SIMIV">Thomson</a>&nbsp;;</li>
<li><a href="Oric_1" class="mw-redirect" title="Oric 1">Oric 1</a> et <a href="Oric_Atmos" class="mw-redirect" title="Oric Atmos">Oric Atmos</a> de <a href="Tangerine_Computer_Systems" title="Tangerine Computer Systems">Tangerine Computer Systems</a>&nbsp;;</li>
<li>les ordinateurs au standard <a href="MSX" title="MSX">MSX</a> (1, 2, 2+, Turbo R) utilisaient un Basic dérivé du GW-Basic, la gestion de la couleur et des sprites s'apparentait à celle des TI-99, le <a href="Processeur_graphique" title="Processeur graphique">processeur graphique</a> utilisé sur ces différentes machines était le TMS9929, un processeur Texas Instruments&nbsp;;</li>
<li>les modèles de la marque <a href="Commodore_International" title="Commodore International">Commodore</a> dont le <a href="Commodore_64" title="Commodore 64">Commodore 64</a>;</li>
<li>les ordinateurs <a href="Atari_8-bits" title="Atari 8-bits">Atari 8-bits</a> (400/800/600XL/800XL/65XE/130XE) et <a href="Atari_ST" title="Atari ST">Atari ST</a>;</li>
<li>le <a href="DAI_Imagination_machine" title="DAI Imagination machine">DAI Imagination machine</a>&nbsp;;</li>
<li>les <a href="Apple" title="Apple">Apple I, II, III et variantes</a> utilisaient un Basic maison mais pouvaient aussi, sur les modèles équipés d'une carte CP/M utiliser la version Basic du CP/M proche du GW-Basic&nbsp;;</li>
<li>le <a href="TI-99/4A" title="TI-99/4A">TI-99/4A</a> de <a href="Texas_Instruments" title="Texas Instruments">Texas Instruments</a>&nbsp;;</li>
<li>certaines calculatrices <a href="Casio" title="Casio">Casio</a> (dont le <a href="Casio_PB-100" title="Casio PB-100">Casio PB-100</a>) et Texas Instruments&nbsp;;</li>
<li>les Sinclair ZX-80, <a href="ZX-81" class="mw-redirect" title="ZX-81">ZX-81</a> (distribué sous le nom de Timex Sinclair 1000 aux US) et <a href="ZX-Spectrum" class="mw-redirect" title="ZX-Spectrum">ZX-Spectrum</a>&nbsp;;</li>
<li>le Tektronix 4051 (Basic graphique sur écran rémanent)&nbsp;;</li>
<li>l'<a href="Olivetti_P6060" title="Olivetti P6060">Olivetti P6060</a> mais aussi M30 et M40 (partie intégrante de l'OS appelé ESE)&nbsp;;</li>
<li>l'Olivetti M10 (ordinateur ayant 24 Ko ou 32 Ko de RAM non volatile avec un Basic en ROM, et pas de <a href="Disque_dur" title="Disque dur">disque dur</a> ni de disquettes)&nbsp;;</li>
<li>Exelvision avec l'<a href="EXL_100" title="EXL 100">EXL 100</a> et le module ExelBasic&nbsp;; le Basic de l'EXL100 était un dérivé de l'Extended Basic du TI-99, les concepteurs de cette machine étant des transfuges de Texas Instruments&nbsp;;</li>
<li>l'<a href="IBM_PC" title="IBM PC">IBM PC</a> et <a href="Compatible_PC" title="Compatible PC">Compatible PC</a> dont les premiers modèles avaient un Basic limité en ROM. Le Basic était fourni sur les disquettes système MS-DOS ou PC-DOS versions 1.0 à 4.0. Pour les IBM PC, le Basic s'appelait Basica alors que sur les compatibles PC il se nommait <a href="GW-Basic" title="GW-Basic">GW-Basic</a>.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Exemples">Exemples</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Exemple_1_:_Basic_original_non_structuré"><span id="Exemple_1_:_Basic_original_non_structur.C3.A9"></span>Exemple 1&nbsp;: Basic original non structuré</h3></div>
<div class="mw-highlight mw-highlight-lang-basic mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="il">10</span><span class="w"> </span><span class="kr">INPUT</span><span class="w"> </span><span class="s2">"Quel est votre nom&nbsp;? "</span><span class="p">;</span><span class="w"> </span><span class="vg">NOM$</span><span class="w"> </span>
<span class="w"> </span><span class="il">20</span><span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="s2">"Bonjour "</span><span class="p">;</span><span class="w"> </span><span class="vg">NOM$</span>
<span class="w"> </span><span class="il">30</span><span class="w"> </span><span class="kr">INPUT</span><span class="w"> </span><span class="s2">"Combien d'étoiles voulez-vous&nbsp;? "</span><span class="p">;</span><span class="w"> </span><span class="vg">NOMBRE</span>
<span class="w"> </span><span class="il">40</span><span class="w"> </span><span class="kd">LET</span><span class="w"> </span><span class="vg">ETOILE$</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">""</span>
<span class="w"> </span><span class="il">50</span><span class="w"> </span><span class="kr">FOR</span><span class="w"> </span><span class="vg">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="il">1</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="vg">NOMBRE</span>
<span class="w"> </span><span class="il">60</span><span class="w"> </span><span class="kd">LET</span><span class="w"> </span><span class="vg">ETOILE$</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">ETOILE$</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">"*"</span>
<span class="w"> </span><span class="il">70</span><span class="w"> </span><span class="kr">NEXT</span><span class="w"> </span><span class="vg">I</span>
<span class="w"> </span><span class="il">80</span><span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="vg">ETOILE$</span>
<span class="w"> </span><span class="il">90</span><span class="w"> </span><span class="kr">INPUT</span><span class="w"> </span><span class="s2">"Voulez-vous plus d'étoiles&nbsp;? "</span><span class="p">;</span><span class="w"> </span><span class="vg">ETOILE$</span>
<span class="nl">100</span><span class="w"> </span><span class="kr">IF</span><span class="w"> </span><span class="kr">LEN</span><span class="p">(</span><span class="vg">ETOILE$</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="il">0</span><span class="w"> </span><span class="kr">THEN</span><span class="w"> </span><span class="kr">GOTO</span><span class="w"> </span><span class="nl">90</span>
<span class="nl">110</span><span class="w"> </span><span class="kd">LET</span><span class="w"> </span><span class="vg">ETOILE$</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kr">LEFT$</span><span class="p">(</span><span class="vg">ETOILE$</span><span class="p">,</span><span class="w"> </span><span class="il">1</span><span class="p">)</span>
<span class="nl">120</span><span class="w"> </span><span class="kr">IF</span><span class="w"> </span><span class="p">(</span><span class="vg">ETOILE$</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"O"</span><span class="p">)</span><span class="w"> </span><span class="ow">OR</span><span class="w"> </span><span class="p">(</span><span class="vg">ETOILE$</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"o"</span><span class="p">)</span><span class="w"> </span><span class="kr">THEN</span><span class="w"> </span><span class="kr">GOTO</span><span class="w"> </span><span class="nl">30</span>
<span class="nl">130</span><span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="s2">"Au revoir "</span><span class="p">;</span>
<span class="nl">140</span><span class="w"> </span><span class="kr">FOR</span><span class="w"> </span><span class="vg">I</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="il">1</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="il">200</span>
<span class="nl">150</span><span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="vg">NOM$</span><span class="p">;</span><span class="w"> </span><span class="s2">" "</span><span class="p">;</span>
<span class="nl">160</span><span class="w"> </span><span class="kr">NEXT</span><span class="w"> </span><span class="vg">I</span>
<span class="nl">170</span><span class="w"> </span><span class="kr">LPRINT</span>
</pre></div>
<p>Commentaires&nbsp;:
</p>
<ul><li>En général, l'interpréteur est insensible à la <a href="Casse_(typographie)" title="Casse (typographie)">casse</a>&nbsp;; les instructions étaient tapées en majuscules sur les machines faisant la distinction entre majuscules et minuscules.</li>
<li>Un nom de variable suivi d'un signe <a href="Dollar" title="Dollar">dollar</a> indique qu'il s'agit d'une <a href="Cha%C3%AEne_de_caract%C3%A8res" title="Chaîne de caractères">chaîne de caractères</a> (<tt>NOM$, ETOILE$, S$</tt>)&nbsp;; une variable sans signe dollar indique un entier ou un nombre décimal (<tt>S, I</tt>).</li>
<li><tt>INPUT</tt> permet l'affichage d'un texte et une saisie du clavier&nbsp;; <tt>PRINT</tt> permet un affichage à l'écran.</li>
<li>Parfois l'instruction <tt>LET</tt> est optionnelle, ainsi, <tt>LET ETOILE$ = ETOILE$ + "*"</tt> peut s'écrire simplement <tt>ETOILE$ = ETOILE$ + "*"</tt> (le signe égal sert à la fois aux affectations de variables et aux tests d'égalité).</li>
<li><tt>FOR-NEXT</tt> est une boucle.</li>
<li><tt>IF-THEN</tt> est une instruction conditionnelle&nbsp;; <tt>OR</tt> est l'<a href="Op%C3%A9rateur_logique" class="mw-redirect" title="Opérateur logique">opérateur logique</a> «&nbsp;Ou&nbsp;».</li>
<li><tt>LEN</tt> est une fonction renvoyant la longueur de la chaîne de caractères, <tt>LEFT$(ETOILE$, <i>n</i>)</tt> est une fonction renvoyant une sous-chaîne composée de <i>n</i> caractères situés à gauche de la chaîne <tt>ETOILE$</tt>&nbsp;; <tt>+</tt> est l'opérateur de <a href="Concat%C3%A9nation" title="Concaténation">concaténation</a> (c'est aussi l'opérateur de l'<a href="Addition" title="Addition">addition</a>).</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Exemple_2_:_Basic_moderne_structuré"><span id="Exemple_2_:_Basic_moderne_structur.C3.A9"></span>Exemple 2&nbsp;: Basic moderne structuré</h3></div>
<div class="mw-highlight mw-highlight-lang-basic mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="c1">'Voici un petit code fait en BASIC moderne</span>
<span class="w"> </span><span class="kr">INPUT</span><span class="w"> </span><span class="s2">"Quel est votre nom"</span><span class="p">;</span><span class="w"> </span><span class="vg">UserName$</span><span class="w"> </span><span class="c1">'On demande le nom de l'utilisateur</span>
<span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="s2">"Bonjour "</span><span class="p">;</span><span class="w"> </span><span class="vg">UserName$</span><span class="w"> </span>
<span class="w"> </span><span class="kr">DO</span><span class="w"> </span>
<span class="w"> </span><span class="kr">INPUT</span><span class="w"> </span><span class="s2">"Combien d'étoiles voulez-vous"</span><span class="p">;</span><span class="w"> </span><span class="vg">NumStars</span><span class="w"> </span><span class="c1">'On demande le nombre d'étoiles de l'utilisateur</span>
<span class="w"> </span><span class="vg">Stars$</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">""</span>
<span class="w"> </span><span class="vg">Stars$</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="vg">REPEAT$</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span><span class="w"> </span><span class="vg">NumStars</span><span class="p">)</span><span class="w"> </span><span class="c1">'&lt;-ANSI BASIC</span>
<span class="w"> </span><span class="c1">'Stars$ = STRING$(NumStars, "*") '&lt;-MS BASIC</span>
<span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="vg">Stars$</span>
<span class="w"> </span><span class="kr">DO</span>
<span class="w"> </span><span class="kr">INPUT</span><span class="w"> </span><span class="s2">"Voulez-vous plus d'étoiles"</span><span class="p">;</span><span class="w"> </span><span class="vg">Answer$</span>
<span class="w"> </span><span class="kr">LOOP</span><span class="w"> </span><span class="k">UNTIL</span><span class="w"> </span><span class="vg">Answer$</span><span class="w"> </span><span class="o">&lt;&gt;</span><span class="w"> </span><span class="s2">""</span>
<span class="w"> </span><span class="kr">LOOP</span><span class="w"> </span><span class="kr">WHILE</span><span class="w"> </span><span class="kr">UCASE$</span><span class="p">(</span><span class="kr">LEFT$</span><span class="p">(</span><span class="vg">Answer$</span><span class="p">,</span><span class="w"> </span><span class="il">1</span><span class="p">))</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"O"</span>
<span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="s2">"Au revoir "</span><span class="p">;</span>
<span class="w"> </span><span class="kr">FOR</span><span class="w"> </span><span class="vg">A</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="il">1</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="il">200</span>
<span class="w"> </span><span class="kr">PRINT</span><span class="w"> </span><span class="vg">UserName$</span><span class="p">;</span><span class="w"> </span><span class="s2">" "</span><span class="p">;</span>
<span class="w"> </span><span class="kr">NEXT</span><span class="w"> </span><span class="vg">A</span>
<span class="w"> </span><span class="kr">PRINT</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Documents_définissant_le_Basic"><span id="Documents_d.C3.A9finissant_le_Basic"></span>Documents définissant le Basic</h2></div>
<ul><li>Le manuel du Basic conçu au <a href="Dartmouth_College" title="Dartmouth College">Dartmouth College</a><sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup></li>
<li><a href="ANSI" class="mw-redirect" title="ANSI">ANSI</a> Standard for Minimal Basic (ANSI X3.60-1978 "FOR MINIMAL BASIC")</li>
<li><a href="Organisation_internationale_de_normalisation" title="Organisation internationale de normalisation">ISO</a> Standard for Minimal Basic (ISO/CEI 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC")</li>
<li>ANSI X3.113-1987 <i>Programming Languages - Full BASIC</i></li>
<li>ANSI X3.113a-1989 <i>Programming Languages - Modules and Individual Character Input for Full BASIC</i></li>
<li>ISO Standard for Full Basic (ISO/CEI 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC")</li>
<li>ANSI Addendum Defining Modules (X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987")</li>
<li>ISO Addendum Defining Modules (ISO/CEI 10279:1991/ Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT")</li>
<li>Standard <a href="ECMA" class="mw-redirect" title="ECMA">ECMA</a>-55, Minimal BASIC (janvier 1978)<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup></li>
<li>Standard <a href="ECMA" class="mw-redirect" title="ECMA">ECMA</a>-116, BASIC (juin 1986)<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Notes_et_références"><span id="Notes_et_r.C3.A9f.C3.A9rences"></span>Notes et références</h2></div>
<div class="references-small decimal" style=""><div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-ins-1"><span class="mw-cite-backlink"><a href="#cite_ref-ins_1-0">↑</a> </span><span class="reference-text">Article par Sacha Krakowiak &amp; Jacques Mossière dans la revue <i><a href="Interstices" title="Interstices">Interstices</a></i> le 05/04/2013 <a rel="nofollow" class="external autonumber" href="https://interstices.info/la-naissance-des-systemes-dexploitation/">[1]</a></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a> </span><span class="reference-text"><span class="ouvrage">«&nbsp;<a rel="nofollow" class="external text" href="http://www.monlyceenumerique.fr/nsi_premiere/archios_arse/a1_architecture_neumann"><cite style="font-style:normal;">Architecture matérielle et assembleur</cite></a>&nbsp;» <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2024-10-22" data-sort-value="2024-10-22">22 octobre 2024</time>)</small></span>&nbsp;: <span class="citation">«&nbsp;"Dans les années 40 et 50, les programmes étaient surtout écrits en langage assembleur".&nbsp;»</span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2024">«&nbsp;<a rel="nofollow" class="external text" href="https://fosse.fr/langage-basic-a-60-ans-de-programmation-pour-debutants/"><cite style="font-style:normal;">Le langage BASIC a 60 ans</cite></a>&nbsp;», <time class="nowrap" datetime="2024-08-02" data-sort-value="2024-08-02">2 août 2024</time> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2024-10-22" data-sort-value="2024-10-22">22 octobre 2024</time>)</small></span>&nbsp;: <span class="citation">«&nbsp;"[...] Un langage de programmation qui a révolutionné l'accessibilité et l'éducation informatique [...]. BASIC visait à simplifier la programmation pour les non-spécialistes [...]".&nbsp;»</span></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a> </span><span class="reference-text"><span class="ouvrage" id="2024">«&nbsp;<cite style="font-style:normal">Thomas E. Kurtz, co-créateur du langage informatique Basic, est mort</cite>&nbsp;», <i>Le Monde</i>,‎ <time class="nowrap" datetime="2024-11-18" data-sort-value="2024-11-18">18 novembre 2024</time> <small style="line-height:1em;">(<a rel="nofollow" class="external text" href="https://www.lemonde.fr/disparitions/article/2024/11/18/thomas-e-kurtz-cocreateur-du-langage-informatique-basic-est-mort_6401262_3382.html">lire en ligne</a>, consulté le <time class="nowrap" datetime="2024-11-18" data-sort-value="2024-11-18">18 novembre 2024</time>)</small><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=Thomas+E.+Kurtz%2C+co-cr%C3%A9ateur+du+langage+informatique+Basic%2C+est+mort&amp;rft.jtitle=Le+Monde&amp;rft.date=2024-11-18&amp;rfr_id=info%3Asid%2Ffr.wikipedia.org%3ABasic+%28langage%29"></span></span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a> </span><span class="reference-text">En correspondance avec Thomas E. Kurtz</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a> </span><span class="reference-text"><span class="ouvrage" id="15"><span class="noarchive">«&nbsp;<a rel="nofollow" class="external text" href="http://www.01net.com/editorial/653917/bill-gates-doit-tout-au-pere-de-steven-spielberg-et-nous-aussi/"><cite style="font-style:normal; color:var(--color-link-red, #d73333);">Bill Gates doit tout au père de Steven Spielberg, et nous aussi...</cite></a>&nbsp;»<sup class="">(<a rel="nofollow" class="external text" href="https://web.archive.org/web/*/http://www.01net.com/editorial/653917/bill-gates-doit-tout-au-pere-de-steven-spielberg-et-nous-aussi/">Archive.org</a> • <a rel="nofollow" class="external text" href="https://archive.wikiwix.com/cache/?url=http://www.01net.com/editorial/653917/bill-gates-doit-tout-au-pere-de-steven-spielberg-et-nous-aussi/">Wikiwix</a> • <a rel="nofollow" class="external text" href="https://archive.is/http://www.01net.com/editorial/653917/bill-gates-doit-tout-au-pere-de-steven-spielberg-et-nous-aussi/">Archive.is</a> • <a rel="nofollow" class="external text" href="https://webcache.googleusercontent.com/search?hl=fr&amp;q=cache:http://www.01net.com/editorial/653917/bill-gates-doit-tout-au-pere-de-steven-spielberg-et-nous-aussi/">Google</a> • Que faire&nbsp;?)</sup></span>, sur <span class="italique">01net.com</span>, <time class="nowrap" datetime="0015-05-02" data-sort-value="0015-05-02">4 mai 15</time></span>.</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a> </span><span class="reference-text">Distribué en France sous le nom <i>Matra Datapoint 2200</i></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF">Communications de l'ACM, <abbr class="abbr" title="numéro">n<sup>o</sup></abbr>&nbsp;11, <span class="nowrap"><abbr class="abbr" title="pages">pp.</abbr>&nbsp;147-148</span>. 1968</a> <small class=" noarchive"><a href="Digital_Object_Identifier" title="Digital Object Identifier">DOI</a>&nbsp;<a rel="nofollow" class="external text" href="https://dx.doi.org/10.1145%2F362929.362947">10.1145/362929.362947</a></small> <abbr class="abbr indicateur-format format-pdf" title="Document au format Portable Document Format (PDF)">[PDF]</abbr>.</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="http://bitsavers.trailing-edge.com/pdf/ibm/5110/">Manuels du Basic sur IBM 5110</a></span>
</li>
<li id="cite_note-Saga-10"><span class="mw-cite-backlink"><a href="#cite_ref-Saga_10-0">↑</a> </span><span class="reference-text"><span class="ouvrage" id="Ishbiah1995"><span class="ouvrage" id="D._Ishbiah1995">D. Ishbiah, <cite class="italique">Bill Gates et la Saga de Microsoft</cite>, Presses Pocket, <time>1995</time>, 396&nbsp;<abbr class="abbr" title="pages">p.</abbr> <small style="line-height:1em;">(<a href="International_Standard_Book_Number" title="International Standard Book Number">ISBN</a>&nbsp;<span class="nowrap">2266069950</span>)</small>, «&nbsp;3. L’Altair&nbsp;»<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=book&amp;rft.btitle=Bill+Gates+et+la+Saga+de+Microsoft&amp;rft.pub=Presses+Pocket&amp;rft.aulast=Ishbiah&amp;rft.aufirst=D.&amp;rft.date=1995&amp;rft.tpages=396&amp;rfr_id=info%3Asid%2Ffr.wikipedia.org%3ABasic+%28langage%29"></span></span></span></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a> </span><span class="reference-text"><span class="ouvrage">«&nbsp;<a rel="nofollow" class="external text" href="https://www.techno-science.net/glossaire-definition/BASIC.html"><cite style="font-style:normal;">🔎 BASIC - Définition et Explications</cite></a>&nbsp;», sur <span class="italique">Techno-Science.net</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2022-05-04" data-sort-value="2022-05-04">4 mai 2022</time>)</small></span>.</span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a> </span><span class="reference-text">Ce qui est distinct de la facilité d'usage&nbsp;: une automobile est d'utilisation facile une fois qu'on sait conduire, mais apprendre à le faire demande plusieurs semaines</span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a> </span><span class="reference-text">Le Tektronix 4051 plaçait toute ligne erronée en mode édition, et le curseur à l'endroit exact où avait été rencontrée l'erreur&nbsp;!</span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><a href="#cite_ref-14">↑</a> </span><span class="reference-text">Une société américaine, <i>Niakwa</i>, vivait de son compilateur et de ses packages pour Basic compilé</span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a> </span><span class="reference-text"><a rel="nofollow" class="external text" href="https://www.wang2200.org/docs/misc/NiakwaBasic-2C.pdf">Niakwa Basic alias Basic 2C sur Wang alias Niakwa programming language</a></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <span class="ouvrage"><span class="noarchive">«&nbsp;<a rel="nofollow" class="external text" href="http://www.powerbasic.com/aboutpb.asp"><cite style="font-style:normal; color:var(--color-link-red, #d73333);">An Introduction to PowerBASIC</cite></a>&nbsp;»<sup class="">(<a rel="nofollow" class="external text" href="https://web.archive.org/web/*/http://www.powerbasic.com/aboutpb.asp">Archive.org</a> • <a rel="nofollow" class="external text" href="https://archive.wikiwix.com/cache/?url=http://www.powerbasic.com/aboutpb.asp">Wikiwix</a> • <a rel="nofollow" class="external text" href="https://archive.is/http://www.powerbasic.com/aboutpb.asp">Archive.is</a> • <a rel="nofollow" class="external text" href="https://webcache.googleusercontent.com/search?hl=fr&amp;q=cache:http://www.powerbasic.com/aboutpb.asp">Google</a> • Que faire&nbsp;?)</sup></span>, sur <span class="italique">www.powerbasic.com</span> <small style="line-height:1em;">(consulté le <time class="nowrap" datetime="2010-12-07" data-sort-value="2010-12-07">7 décembre 2010</time>)</small></span>.</span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> BASIC, <a rel="nofollow" class="external text" href="http://www.bitsavers.org/pdf/dartmouth/BASIC_Oct64.pdf">édition 1964</a> et <a rel="nofollow" class="external text" href="http://www.bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf">édition 1968</a></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-55,%201st%20Edition,%20January%201978.pdf">ECMA-55, Minimal BASIC</a></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><a href="#cite_ref-19">↑</a> </span><span class="reference-text"><abbr class="abbr indicateur-langue" title="Langue : anglais">(en)</abbr> <a rel="nofollow" class="external text" href="http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-116,%201st%20edition,%20June%201986.pdf">ECMA-116, BASIC</a></span>
</li>
</ol></div>
</div>
<p>Le présent article est basé sur un article originellement écrit sur <a href="Nupedia" title="Nupedia">Nupedia</a> par Peter Fedorow, et modifié sur la version anglaise de Wikipédia, puis traduit en français.
</p>
<div class="mw-heading mw-heading2"><h2 id="Voir_aussi">Voir aussi</h2></div>
<style data-mw-deduplicate="TemplateStyles:r194021218">
/* start https://fr.wikipedia.org/ */


.mw-parser-output .autres-projets>.titre{text-align:center;margin:0.2em 0}.mw-parser-output .autres-projets>ul{margin:0;padding:0}.mw-parser-output .autres-projets>ul>li{list-style:none;margin:0.2em 0;text-indent:0;padding-left:24px;min-height:20px;text-align:left;display:block}.mw-parser-output .autres-projets>ul>li>a{font-style:italic}@media(max-width:720px){.mw-parser-output .autres-projets{float:none}}


/* end https://fr.wikipedia.org/ */
</style>
<div class="mw-heading mw-heading3"><h3 id="Articles_connexes">Articles connexes</h3></div>
<ul><li><a href="National_Science_Foundation" class="mw-redirect" title="National Science Foundation">National Science Foundation</a></li>
<li><a href="Liste_des_dialectes_Basic" title="Liste des dialectes Basic">Liste des dialectes Basic</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Liens_externes">Liens externes</h3></div>
<ul><li><a rel="nofollow" class="external text" href="http://bodman.developpez.com/basic/">Didacticiel sur le Basic</a></li>
<li><a rel="nofollow" class="external text" href="http://msdn.microsoft.com/fr-fr/vstudio/hh388573.aspx">Centre de développement Visual Basic sur MSDN France</a></li></ul>
<div class="navbox-container" style="clear:both;">

</div>
<ul id="bandeau-portail" class="bandeau-portail"><li><span class="bandeau-portail-element"><span class="bandeau-portail-icone"><span class="noviewer" typeof="mw:File"></span></span> <span class="bandeau-portail-texte">Portail de la programmation informatique</span> </span></li> </ul></div><!--htdig_noindex--><div><div class="zim-footer">
Cet article est issu de <a class="external text" title="Dernière modification le 2025-10-21" href="https://fr.wikipedia.org/wiki/?title=Basic_(langage)&amp;oldid=229941514">Wikipédia</a>. Sauf mention contraire, le texte est disponible sous <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.fr">Creative Commons Attribution-Share Alike 4.0</a>. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>